THE PANELS OF ISTAR
Page still under construction
Here we describe some of the panels you will encounter in using Istar.
Those not described here should be fairly obvious once you know these.
Istar uses two screens, separate from Workbench. The Control Screen
comes up first, with a grey background. It is used for the panels. The
main Easel comes up when you have a knowledge base ready. Its size can
changed with the Prefs button on Initial Control Panel.
The control screen usually resides along the bottom and can be moved
manually using the two-pixel strips along its top. Then there is a thin
backdrop window that shows the meanings of items. Important on this window
is the gadget at the left hand end with two arrows. This moves the control
screen up and down quickly.
This small panel resides top left corner of the control
screen. It has one column of buttons that are relevant to the program
itself, even when there is no KB - things like 'About' and 'Quit'. The
'Errors' button allows you to explore the various levels of any error that
occurs, though it is perhaps of more use to technical users.
The 'Prefs' button takes you to the Preferences Panel.
But, to get going, use 'New' or 'Get KB', which will, respectively, create
a new KB for you or load an existing one. When a KB is successfully
loaded the main easel will appear and on the control screen a KB panel will
appear. You can load or create any number of KBs (depending on memory),
each with a drawing easel and each with its own KB panel.
(In version 1.01 you could only have a single KB at a time and there was
no KB panel. Instead, the main control panel held three columns of
buttons and there were separate panels to select item type, relationship
type and to show the goal list.)
The 'Prefs' button brings up a Preferences panel.
This panel is being developed. You should normally only alter it right
at the start of the program at present, as some of its facilities have
little or no effect after a KB has arisen. Try things and see: if it
works, fine, if not, remember to set it at start next time.
Its main purpose is to set a few parameters relating to new knowledge
bases (standard values in brackets):
- # Size and name of new KB (50,000 LWs and 30%)
- # Size and depth of its main Easel (30 by 24 inches)
Dimensions are measured in 1/256 of inch (approx. tenth of a
millimetre).
It also allows you to set the amount by which all main Easels scroll and
to select fonts for:
- # Main Easel
- # Question panels
- # Documents (not yet used)
Note that changes to the main easel font are only effective next easel
you bring up.
There is one Knowledge Base (KB) Panel for each knowledge base that Istar
is dealing with. It comprises two columns of buttons at its left and two
lists at its right, with a few other buttons. The name of the KB is shown
in the window title of the panel.
First column are to do with current KB:
- Save
- Save As
- KB Dump - to export ASCII translations of the KB
- Easel - to resize the main Easel etc.
- KB Area - to see details and rename: KBA Panel
- Clone KB (not yet working)
- Rid - to get rid of the KB
Second column are to do with the knowledge in the current KB:
- See Easel - when multi KBs, to bring Easel to front
- Reset Goals (to prepare the goal list for ...)
- Infer Goals (to start a run)
- Goal List (three part; see below)
- Att Types (to create new attribute types)
- Topics (to manage topics)
- Lists (to manage lists)
- Find (to search for item etc. by name or sub-string)
Over the right hand half are two lists that are standard panel lists. Above, is the
Item Types list. This is perhaps the most frequently used, as you
change item type. Adjoining it are buttons to create a new item type, see
and edit an existing type, and get rid of an item type (dangerous, since
you lose all items of that type; try it on a dummy KB you have created for
the purpose!).
Below right is the Relationship Types list, with buttons to create a
new relationship type or edit an existing one. You will seldom use this
list, except when you are making up specific relationships.
Program-wise, the KB Panel is controlled internally by a yyModuleKBData
(where yy is the signature of the module that is the program, e.g. 'kt' for
Istar or 'nn' for Annotator) structure which holds all information that
pertains to the access to this particular knowledge base by this particular
running of this program (or, strictly, module). Normally it would hold the
addresses of gadgets for the KB Panel. In this way we obtain an easy way
for any program to have any number of KBs active at any time, each having
different current item types etc.
Second column of KB Panel, in the middle, there is a three-part gadget
which has the name of the current goal list in its middle. Left wee button
allows you to select a new goal list from among the lists currently in the
KB. Right wee 'S' button will bring up the goal lists's Item Details Panel
so you can peruse and, if needed, reorder, the goals in the list. Hitting
the ResetGoals and InferGoals buttons operate of the current goal list.
To create a new item type the main thing is to give it a name, and then
some other information depending on what you want it for. On the KB Panel, hit the 'New' button adjoining the item types
list. This creates a new item type with null name (a dash) and presents
you with the Item Type Panel for this, where you fill in
its details.
Click the 'New' button adjoining the Relationship Types list on the KB panel. A new type is created for you, and the Relationship Type Panel appears, allowing you to fill in
its name and other details.
There are two ways of creating a new domain or attribute type.
At any time you can create one by hitting the 'Att Types' button in the
second column of the KB Panel. This brings up a panel of currently available domains. Hit the adjoining
'New' button, and up comes the New Domain Panel.
Or you can create one while in the process of adding an attribute to an
item or an item type - which is convenient since it is often at that
point that you realise the domain you need is not available. To start
this, you hit the 'New' button adjoining a list of attributes, and this
brings up the Add Attribute Panel from which you can
access the New Domain Panel.
Hit the 'KB Area' button on KB panel, and up comes the 'Knowledge Base
Area' (KBA) panel, which tells you various things about the KB itself. The
most useful things are:
- Name: You can change the name of your KB, up to 40 chars.
- DSA % Expansion: Make this higher for dynamic KBs; it is the
amount (as a %) of free space ('virgin glass' if we use the metaphor of
recycling glass bottles) created in the KB when it is next loaded.
Standard value is 30%, which gives plenty for the average knowledge
engineering session. DSA means 'Data Structure Area' - where almost
everything goes.
- Min DSA: 30% of zero is zero, which is a problem when your KB is
young. So we also stipulate a minimum size for the DSA. Standard value
is 50,000 longwords (200,000 bytes).
Altering the last two resizes the KBA when you hit 'OK' (though it
doesn't work yet in Version 1.03) but you should seldom need to do so. Of
minor interest are the following:
- KBA at: The address in memory of the start of the KBA. Decimal.
- Actual size: Actual size in memory (bytes).
- Blocks: How many separate blocks in the KB. An Istar free
attribute typically comprises around 10 blocks.
- Bottles and Glass: This shows how much 'free space' or 'glass'
there is to be recycled. Bottles shows how many separate pieces, Glass
the total amount (in bytes). Usually only of minor interest, except when
the KB gets fragmented.
Other, less useful things are:
- Version: Ignore this. At present always 0. It is the version of
software, NOT of the knowledge you have put there.
- Max Ring Length: Occasionally this is used to check against
infinite loops, but not always. Usually ignore it at 9999.
- Tasks: How many Amiga tasks are currently sharing this. Always 1
at present (the current task).
The Attribute Details panel for an attribute gives lots of information
about it. The main way to bring it up is to click with RMB on an attribute
box, but it will also come up if you hit the 'See' button of any panel list that shows attributes. The panel is
multi-threading so that you can have any number of them up at once and can
continue to operate the main easel and other panels the while.
For details of this panel, see p.adp.html, which
shows an example as an imagemap to all its parts. The information it
contains includes:
- Name and meaning, and DSAP of attribute
- Type and current value, and whether to show value on easel
- Current state: whether answered, etc.
- The item it belongs to, with 'See' button to take you to it
- Antecedent and consequent attributes and items
- Derivation: constant, inferred, user-supplied and asynchronous
- Inference method and cutoffs
- Texts for question panel
- Whether overridable, text for override and whether overridden
- Exit buttons.
(This is available only from Version 1.0872. Before that, some user texts
are set up on the Attribute Details Panel).
The User Texts Panel allows you to set up texts that the user will
experience when running the KB. There are a number of texts, with various
purposes, and a means of moving and swapping texts around. The texts that
can be set from the panel include:
- The Label of the attribute as seen on the main easel. (This is also
settable on the Attribute Details Panel.)
- The Meaning of the attribute. (This is also settable on the Attribute Details Panel.)
- Question Text: Text put to the user when the value of this attribute
is being asked of them.
- Form Text: A shortened version of the Question Text for use on Forms.
The space indicated is approximately that available on the Form.
- Override Text: Like Question Text, but allows different wording to be
presented when overriding the attribute's value.
- Help Texts: There are eight of these, the first one labelled
'Help' and seven others labelled '.. 1' to '.. 7'. These are brought up
for the user when s/he hits one of the Help buttons on the User Answer
Panel. You may use the different help texts for any purpose you like, for
instance text 1 is used to define terms, text 4 to give hints on how to
seek the information being asked for, etc. But be sure to communicate
these conventions to the user!
- Temporary Text 'T': This text is for holding temporary texts.
Its main purpose is to allow text to be copied to the other texts or
swapped with them (as notified by the state of the cycle gadget to its
left). Note that the T text is persistent in the KB. Once you have
finished with it you should empty it (using e.g. Amiga-X).
- The 'T' Buttons: Hitting one of these will modify the text
alongside the button, either copying the T Text to this text or swapping
them. Which happens depends on the cycle gadget by the T Text. By a
sequence of T hits, with suitable altering of the cycle gadget, you can
duplicate, move, swap texts. Note that all such alterations are
accomplished via the T Text.
The Attribute Action Panel is a small panel with various buttons allowing
you to take action on the attribute. The panel is small so you can have
several in view, for several attributes in which you have an interest. The
buttons include:
- 'Reset' and 'Infer' (top left): These normally form a pair: you hit
'Reset' to reset all antecedents of the attribute to unanswered and then hit 'Infer' to start
the inference process for the attribute.
- 'Override' (bottom left, only present if overriding allowed on the
attribute): Hit this to bring up a question panel that
will ask a value and place it in the attribute's override slot.
- 'Add Goal' (top middle): Hit this to add this attribute to the current
goal list.
- 'Delete' (top right): Hit this to remove the attribute. WARNING: You
are not asked to confirm deletion, and when you delete all its
relationships are deleted too; so be careful.
- 'Data..' (middle right): A short cut to the Attribute
Details Panel.
- 'Done' (bottom right): To send the panel away.
The item details panel can be accessed by clicking the 'See' button on
the attribute details panel attached to the item name. It will also
appear if you click on an item box on the easel, such as a form.
Most of it is straightforward, such as label/name and meaning. There is a
list of attributes it contains taking up most of the left hand side. With
this you can select an attribute and bring up its panel with 'See' and you
can make it the first attribute in the item with 'To 1', though this has
very little effect in the current version.
You can attach an item to topics as above.
The two buttons concerned with importing and displaying text are not
effective in this version.
The relationship details panel comes up if you click on a link on the
main easel or if you click the wee 'R' button at the bottom of the
attribute detaild panel. It gives details about the relationship,
including antecedent and consequent.
The main things of interest are the unary operator, and the weight. The
use of these is explained in the document.
The Explain button brings up an explanation of what would happen when
inference is performed with this relationship.
The Item Type Panel shows details of an item type. Normally you will see
it when you create a new item type but sometimes
you may wish to alter details of an existing one. When creating a new item
type:
- Enter the name for the item type.
- Ignore all the checkboxes for now.
- What colours do you want? First Pen gives colour of label, if any.
Second Pen gives colour of outline box. Pattern gives pattern for outline
box. Similar to Relationship Type Panel. (This is not available in
versions earlier than 1.03.)
- What attributes should it have? What standard relationships? At
this point you would set these; but what you do will depend on the use of
items of this type, whether they are:
In any case, you can create attributes later, and even change the usage.
- Click the 'OK' button. Type made.
(The new type is automatically selected for drawing.)
In a semantic net (or a cognitive map) the
important thing about items is the relationships they have with other
items. So it is a good idea to define relationship types that will be
drawn from the items of this type. So we add a couple of extra steps to
the above, to define the relationship types you want (not available until
version 1.03).
- Click 'New' button under Item Type list on the KB panel.
- Enter the name for it.
- Ignore all the checkboxes for now.
- What colours do you want?
- There are two type gadgets mid-panel, showing 'None' and labelled
'Left' and 'Right'. Click the 'Right' one. Up comes a list of
relationship types. [Bug in version 1.03: If there is more than one KB
active, the list will not appear; get rid of all but this KB.] Select
one, such as 'Precedence' and click the 'OK' button.
- Click the 'OK' button on the Item Types Panel.
Now you're done, draw two items of this new type on the easel. Draw a link
from the right hand edge of the left one to the other. It should draw a
Precedence (or your chosen) relationship; you can check this by bringing up
the Relationship Instance Details panel for the
relationship.
Note that we did not set the 'Left' relationship type. We could do so.
But when it is 'None' then the type drawn will be that shown selected in
the Relationship Types List on the KB panel.
The other main use of items is as a database record, a collection of
attributes. So for this, we take a few extra steps to add attributes.
(You can create item types with both relationship types and attributes; no
problem.)
- Click 'New' button under Item Type list on the KB panel.
- Enter the name for it.
- Ignore all the checkboxes for now.
- What colours do you want?
- Down the bottom is the attribute list. Hit the adjoining 'New'
button.
- Up comes a smaller panel to add an attribute;
take the steps indicated. You can create new attribute types at this point
if you need to.
- Keep adding attributes as needed.
# Click the 'OK' button.
Free attributes have items that are not
visible and whose only reason for existence is to support the single
attribute. Such items are defined as having precisely one attribute and
having no item box. You will seldom need to create a free attribute item
type, because they are usually created automatically when you create an
attribute type, but should you need to, the procedure is a variation on the
above, as follows:
- Click 'New' button under Item Type list on the KB panel.
- Enter the name for it.
- Ignore all the checkboxes for now.
- Hit the 'Own box' gadget to turn it off - meaning that no item box is
drawn.
- Ignore the colours and pattern since they refer only to the item box,
not to the (attribute) box that is seen.
- Create exactly one attribute as above, by hitting the 'New' button
adjoining the attribute list. Up comes a smaller panel to add an attribute; take the steps indicated. You can
create new attribute types at this point if you need to.
- Hit the 'OK' button.
You can also create a free attribute item type via the Attribute Type Panel.
This panel is a standard panel list. It shows
the currently available domains (attribute types) plus a few other buttons:
- 'See' button: Brings up the Attribute Type Panel
which allows you to change various details of the selected domain.
- 'New' button: Brings up the New Domain Panel which
creates a new domain.
- 'Rid' button: Gets rid of the selected domain (attribute type), asking
you first.
- '1', 'n' buttons: Moves the chosen domain up and down the list.
This panel shows the details of an attribute type (domain), including
standard things like its name, meaning, value type, and visual appearance.
In addition it has a list of Value Names, especially for use in enumerated
and ordinal types, and a button that creates a free attribute item type for
it.
This panel allows you to create a new domain. You will probably use it
most to create enumerated and ordinal types. It is fairly simple process,
in which the steps are numbered for you:
- Select the value type for the
domain.
- Enter a name for it.
- Enter a meaning for it, if any.
- Hit 'OK'
Sometimes, after this the Attribute Type Panel comes up
to allow you to set other details if you wish.
This panel allows you to define or change the details for the relationship
type, including its name, its usage syntax and semantics, and the visual
appearance of the lines that express its instances on the main easel.
- Enter a name.
- Usage syntax: Is it DAG or not? If DAG (Directed Acyclic Graph) then
you cannot form cycles with instances of this type of relationship. That
is, you cannot build a KB with links e.g. from A to B, B to C, C to D, and
D back to A (though you can have A to B, B to C, C to D and A to D). Many
types of relationship are DAGs, e.g. most dependencies.
- Usage semantics: If it is DAG, does this type of relationship perform
inference? Usually not.
- Pens and pattern. The two pens can define the colours in which
instances of this type of relationship will be drawn for positive and
negative versions of the relationship. If either is zero then a default
colour will be used that indicates whether the relationship is a DAG, is
inference or not. The pattern is 16 pixels repeated along the line.
Usually used to give visual indication of type of relationship.
- Do relationship instances of this type have any attributes? If so,
add them one by one as for an item type.
- When done, click the 'Change' button (or 'Cancel').
Note that, though now selected in the Relationship Types list in the KB Panel, the next relationship you draw might not be of
this type, since the selected item type might have a standard relationship type.
Note that if you alter the visual appearance, existing instances of this
type will not be altered in visual appearance. But new instances will
take on the new appearance. Also, when you bring up a Relationship Details
panel and click 'OK' the visual appearance will change.
BEWARE: Do not change parameters of the standard relationship types
(though you may change their visual appearance to suit your tastes). In
particular, if you make 'Inference' to be not a DAG you will be allowed to
create an infinite loop in the KB.
The Topics panel is brought up for an item, attribute or relationship and
shows one or more banks of checkboxes, each with the name of a topic. You
can link your thing to any of the topics shown by ticking the appropriate
boxes. You can set up new topics by hitting the Topics button on KB Panel.
The References facility is not yet available. It will allow you to link
things to external references, e.g. to record why it was that you linked
two attributes that would not normally be linked.
The Lists Panel is used to form lists, in a
two-step operation which is shown on the panel as two long cycle buttons,
the width of the panel, and various detail gadgets below them:
- First, the source for the list. It could be all attributes, items
and/or relationships, or it could be all instances of a particular type, or
it could be all members of an existing list, or it could be all those
linked to members of an existing list. The last two are equivalent
respectively to relational select and relational join in database
terminology.
- Second, which of the elements in source to select? It could be all
of them, or only those that fulfil certain conditions, or all those except
them. The conditions as present are fairly simple: containing a text in
their names or meanings, attributes that are answered etc., or topological
conditions.
- Third, hit the 'Do It' button, to create the list.
You might notice that these operations are similar to various database-like
operations, including SELECT
and JOIN
.
On main control panel, click the 'Find' button. This brings up the Find
panel (which in the current version is rather sparse and empty). It allows
you to find attributes, attribute types, items, item types, relationships,
relationship types by sub-strings their names contain.
# Enter the sub-string in the long string gadget at the top.
# Then click either Item, Att or Rel, depending on what you want to
find. It then brings up a panel for the thing found, if any: an attribute
action panel, an item details panel or a relationship instance panel.
# Note that it will search the types before the instances.
# If it's not the one you want, send that panel away (Cancel or Done)
and click Continue. It will continue the search from where it left off.
# You can watch the number.
# If you want to find the total number of items, attributes or
relationships, clear the string gadget and hit the appropriate button. The
number then shows you the total number, including the number of types.
# (Note that in current version, Rel does not work.)
These are forms that appear when the KB is being run. That is, the end
user sees them.
This panel, presented during the inference
process, asks for the value of one attribute. It has:
- Some text that shows what is being asked for.
- A gadget in the middle where the value is entered, and whose type is
suited to the type of attribute.
- 'OK' button when you have entered the value.
- 'Unknown' button if you want to say you don't know the value.
- 'Abort' button to stop the inference process.
- 'Help' button, to display any help text that there might be.
- 'Review' button, that puts up a list of attributes answered and allows
you to reset them so that they come up next time.
- (From version 1.08) Sometimes, an override button above 'OK'.
It can be cumbersome to the user to be asked six questions one by one,
especially when they all concern one entity, such as name, address, age,
gender of a patient. Such attributes can be linked to a Form, so that if
any one of them is needed then a Form panel is presented which requests
them all.
At present, the Form facility is simple, and has the following
characteristics:
- A full screen panel.
- A short text to introduce the Form, e.g. "Please give the following
information about the patient:". The text is in the Question font which
can be set by the Preferences panel.
- Up to about six value gadgets down right half of
the panel, with their texts down the left half.
- The number six is determined by the amount of space that each gadget
takes up until all the Form space is used up; at present it is six or
seven. We will say 'six' below.
- Two buttons 'OK' and 'Abort'.
As KB developer creating a Form is easy. Select 'Form' from the itemtypes list and place a box somewhere to the left of
the group of attributes that you wish to go in the Form. Then draw
relationships from the RHS of the Form box to each attribute in turn (you
must draw in this direction since if you draw from the attribute box
towards the Form box it starts to draw an inference link). Also, click on
the Form box to give it a Name, Meaning and FormText. (Notice that this is
the standard Item Details Panel but with an extra slot
for FormText.)
The action of the inference cycle is that if a form-linked attribute is
found by a backward chaining search then that attribute's Form is presented
to the user with the (first 'six') attributes that are linked to it, in the
order in which the Form item sees them. When the user hits the 'OK' button
all those attributes become answered with the values shown on the Form.
Then each such value is propagated forward before the inference cycle
continues.
You can link any number of attributes to a Form. But they are presented to
the user only approx 'six' at a time and when the seventh is needed by the
backward chaining process the Form will be presented again with the next
'six', and so on. Note that Form only presents unanswered attributes.
Any attribute can be linked with more than one Form. It might be asked as
part of Form 1 and then will not cause Form 2 to come up.
not yet written
A number of panels have lists of things from which you may select, and
which are surrounded by various buttons:
- 'See' button: Brings up the appropriate panel showing details of the
selected thing and allowing you to change them.
- 'R' button: Only relevant when the list is of things related to the
current thing, this button brings up details of the relationship to the
selected thing, rather than of the selected thing itself.
- 'X' button: In some cases this button provides a more detailed
explanation than the 'See' or 'R' buttons.
- 'New' button: Creates a new element for the list, of the appropriate
type. Normally then another panel appears, allowing you to set details of
the new thing.
- 'Rid' button: Gets rid of the selected thing.
- '1', 'n' buttons: Moves the chosen domain up and down the list.
Copyright (c) Andrew
Basden 2 February 1998. 9 December 1998 Added User
Text Panel.